package com.example.basic.dao;

import com.example.basic.controller.dto.UserDTO;
import com.example.basic.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author majianwei
*/
@Mapper
public interface UserMapper {

    /**
     * 通过名字和年龄查询user
     * @param name name
     * @param age age
     * @return user
     */
    User findByNameAndAge(@Param("name") String name, @Param("age") Integer age);

    /**
     * 查询所有user
     * @return users
     */
    List<User> selectAll();

    /**
     * 通过性别查询
     * @param sex sex
     * @return user
     */
    List<User> selectBySex(String sex);

    /**
     * 根据ID查询
     * @param id id
     * @return user
     */
    User selectById(Integer id);

    /**
     * 添加user信息
     * @param user user
     * @return 成功数量
     */
    Integer addUser(User user);

    /**
     * 批量添加user信息
     * @param userList userList
     * @return 成功数量
     */
    Integer addBatch(@Param("userList") List<User> userList);

    /**
     * 更新user信息
     * @param user user
     * @return 数量
     */
    Integer update(User user);

    /**
     * 根据ID删除
     * @param id id
     * @return 数量
     */
    Integer deleteById(Integer id);

    /**
     * 根据ID批量删除
     * @param idList idList
     * @return 数量
     */
    Integer deleteBatch(@Param("idList") List<Integer> idList);

    /**
     * 根据id批量查找
     * @param ids ids
     * @return users
     */
    List<User> findByIds(List<Integer> ids);

    /**
     * 根据name批量查找
     * @param names names
     * @return users
     */
    List<User> findByNames(List<String> names);

    /**
     * 根据偏移量查询
     *
     * @param offset 偏移量
     * @param size   数量
     * @return users
     */
    List<User> selectByPartition(@Param("offset") int offset, @Param("size") int size);

    Integer countAll();

    List<UserDTO> testIf(UserDTO userDTO);
}




